package com.mazaiting

import java.io.File

/**
 * 编译链接汇编代码
 */
object CompileLink {
    /** 后缀名 */
    private const val SUFFIX = ".asm"

    @JvmStatic
    fun main(args: Array<String>) {
        if (args.size == 1) {
            // 获取文件名
            var fileName = args[0]
            // 判断文件名是否以.asm结尾
            if (fileName.endsWith(SUFFIX)) {
                // 截取文件名
                fileName = fileName.substring(0, fileName.length - 4)
            }
            // 判断文件是否存在
            if (File(fileName + SUFFIX).exists()) {
                // 编译链接
                cl(fileName)
            } else {
                println("$fileName$SUFFIX 文件不存在")
            }
        } else {
            println("输入错误, 请输入争取的打包格式: cl <fileName>")
        }
    }

    /**
     * 编译链接
     * @param fileName 文件名
     */
    private fun cl(fileName: String) {
        // 编译
        println("开始编译...")
        run("assmbl.bat $fileName")
        println("编译完成")
        Thread.sleep(1000)
        // 链接
        println("开始链接...")
        run("lnkc.bat $fileName")
        println("链接完成")
        Thread.sleep(1000)
        // 运行
        println("开始运行")
        run("$fileName.exe")
    }

    /**
     * 执行命令
     * @param command 命令
     */
    private fun run(command: String) {
        Runtime.getRuntime().exec(command)
    }
}